package xyz.herz.aic.controller;


import lombok.extern.slf4j.Slf4j;
import org.noear.solon.annotation.*;
import org.noear.solon.core.handle.Context;
import org.noear.solon.core.handle.Result;
import org.noear.solon.validation.annotation.NoRepeatSubmit;
import xyz.herz.aic.entity.BodyDTO;
import xyz.herz.aic.entity.FormDTO;
import xyz.herz.aic.entity.FormFileDTO;
import xyz.herz.aic.entity.UriDTO;

/**
 * 接口测试
 */
@Controller
@Mapping("/api")
@Slf4j
public class ApiCtl {

    /**
     * get请求
     * @param       uriDTO
     * @return      get的参数(uri参数)作为json返回
     */
    @Get
    @Mapping("/get")
    public Result<UriDTO> get(@Param UriDTO uriDTO){
        return Result.succeed(uriDTO);
    }

    /**
     * body json提交
     * @param bodyDTO   表单(body json)
     * @return          返回值
     */
    @Post
    @Mapping("/body")
    public Result<BodyDTO> body(@Body  BodyDTO bodyDTO){
        return Result.succeed(bodyDTO);
    }

    /**
     * 普通表单
     * @param formDTO   form表单
     * @return          返回值
     */
    @Post
    @Mapping("/form_simple")
    public Result<FormDTO> form(FormDTO formDTO ) {
        return Result.succeed(formDTO);
    }

    /**
     * 文件表单
     * @param formFileDTO   表单
     * @return              返回值
     */
    @Post
    @Mapping(path = "/form_file" )
    @NoRepeatSubmit
    public void formFile(FormFileDTO formFileDTO , Context ctx)  {
      try {
          log.warn(formFileDTO.getName() +" "+ formFileDTO.getLv());
          ctx.outputAsFile(formFileDTO.getAttachment());
      }catch (Exception e){
          e.printStackTrace();
          ctx.output("文件上传异常");
          ctx.status(500);
      }
    }




}
